package domainmodel;
/**
  * @author	OOP Team
  */
public class Kaart {
	private String type = "Harten";
	private int nummer = 1;
	private boolean isOmgedraaid;

	public Kaart(String type, int nummer) throws IllegalArgumentException {
		this.setType(type);
		this.setNummer(nummer);
	}

	protected void setType(String type) throws IllegalArgumentException {
		if (!isGeldigType(type)) {
			throw new IllegalArgumentException("Ongeldig type.");
		}
		this.type = type;
	}

	protected boolean isGeldigType(String type) {
		if (type == "Harten" || type == "Schoppen" || type == "Ruiten" || type == "Klaveren"){
			return true;
		}
		return false;
	}

	public String getType() {
		return type;
	}

	protected void setNummer(int nummer) throws IllegalArgumentException {
		if (!isGeldigNummer(nummer)) {
			throw new IllegalArgumentException("Ongeldig nummer.");
		}
		this.nummer = nummer;
	}

	private boolean isGeldigNummer(int nummer) {
		if (1 <= nummer && nummer <= 13){
			return true;
		}
		return false;
	}

	public int getNummer() {
		return nummer;
	}

	public void draaiOm() {
		this.isOmgedraaid = true;
	}

	public boolean isOmgedraaid() {
		return isOmgedraaid;
	}

	@Override
	public String toString() {
		String result = null;
		String teken = "" + getNummer();
		result = getType() + " " + teken;
		return result;
	}

	public boolean isHoger(Kaart kaart) throws IllegalArgumentException {
		if (kaart == null) {
		}
		return getNummer() >= kaart.getNummer();
	}

	@Override
	public boolean equals(Object object) {
		boolean result = false;

		if (object instanceof Kaart) {
			Kaart kaart = (Kaart) object;
			if (kaart != null && getNummer() == kaart.getNummer()
					&& getType().equals(kaart.getType())) {
				result = true;
			}
		}
		return result;
	}

	public boolean equals(Kaart kaart) {
		boolean result = false;

		if (getNummer() == kaart.getNummer()) {
			result = true;
		}
		return result;
	}

}
